之前有提過我們的 logs 是 ELK,使用 Elasticsearch、Logstash 和 Kibana 三個開源產品的組合,它們一起為實時數據搜索、日誌分析和可視化提供解決方案。
今天從兩個方面教學,部署及升級。部署上我們可以使用 terraform elasticcloud provider 來做 IaC。所謂的 Terraform provider 是 terraform 的 plugin,可以負責理解 API 交互跟管理特定技術平台(如雲服務提供商、版本控制系統,所以你會看到 aws 有提供 provider,helm 也有。而這章節要提的 elasticcloud 也有提供。
provider "elasticcloud" {
apikey = "your-api-key"
}
而這邊會特別介紹 logstash 的部署。
Logstash 是負責收集、處理和轉發 log 的 component。
那要如何設定他要如何收集、處理和轉發 log 呢?
input {
file {
path => "/path/to/your/logfile.log"
start_position => "beginning"
}
}
filter {
json {
source => "message"
}
}
output {
elasticsearch {
hosts => ["${elasticsearch_endpoint}:9200"]
index => "logstash-%{+YYYY.MM.dd}"
user => "${username}"
password => "${password}"
}
}
locals {
logstash_config = templatefile("logstash.tpl", {
elasticsearch_endpoint = "https://your-elasticsearch-endpoint"
username = "your-username"
password = "your-password"
})
}
resource "elastic-cloud_ec_deployment" "example" {
name = "example-deployment"
region = "aws-eu-west-1"
version = "7.15.0"
deployment_template = "aws-io-optimized-v2"
logstash {
config {
content = local.logstash_config
name = "logstash.conf"
}
topology {
size = "1g"
}
}
}
output "logstash_endpoint" {
value = elastic-cloud_ec_deployment.example.logstash[0].http_endpoint
}